import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns 
df=pd.read_csv('H:\VS Code\深圳一手商品房数据处理\深圳一手商品房成交信息.csv')
print(df.head())#显示前五行，查看数据
print("异常成交均价记录\n:",df[df['成交均价']>150000])#异常数据处理
df_clean=df.drop(df[df["成交均价"]==0].index)#去除成交均价为0的行
print(df_clean.head())
print(df_clean[['成交均价','可售面积','成交套数']].describe())
df_clean=df_clean[df_clean['成交套数']<=df_clean['可售套数']]
df_clean['日期']=pd.to_datetime(df_clean['日期'])#转换日期
df_clean['季度']=df_clean['日期'].dt.to_period('Q')#提取季度
print(df_clean.head)#展示
#统计每个区域的成交均价，并按照降序排列
area_price=df_clean.groupby('所属区')['成交均价'].mean().sort_values(ascending=False)
print(area_price)
#生成新的数据集
df_clean.to_csv("H:\VS Code\深圳一手商品房数据处理\更新后的数据集1.0.csv",index=False)
#画出各行政区成交均价的柱状图
plt.figure(figsize=(10,6))
plt.bar(area_price.index,area_price.values)
plt.title('深圳个行政区一手房成交均价对比')
plt.xlabel('行政区')
plt.ylabel("均价(元/㎡)")
plt.xticks(rotation=45)
plt.savefig("H:\VS Code\深圳一手商品房数据处理\区域成交价柱状图.png")
#画出一手房用途分布的饼图
usage_dist=df_clean["用途"].value_counts(normalize=True)
print(usage_dist)
plt.figure(figsize=(8,8))  
plt.pie(usage_dist, labels=usage_dist.index, autopct='%1.1f%%')  
plt.title("深圳一手房用途分布")  
plt.savefig("H:\VS Code\深圳一手商品房数据处理\一手房用途扇形图.png")  



#月度趋势聚合分析
monthly_data=df_clean.resample('M',on='日期').agg({'成交均价':'mean','成交套数':'sum'}).reset_index()
# 计算月度移动平均（7天窗口）
monthly_data['成交均价_移动平均'] = monthly_data['成交均价'].rolling(window=7).mean()
monthly_data['成交套数_移动平均'] = monthly_data['成交套数'].rolling(window=7).mean()
monthly_data.to_csv("H:\VS Code\深圳一手商品房数据处理\月度数据.csv",index=False)
# 绘制移动平均线图表
plt.figure(figsize=(12,6))
plt.plot(monthly_data['日期'], monthly_data['成交均价_移动平均'], label='成交均价_移动平均', color='green', linestyle='--')
plt.plot(monthly_data['日期'], monthly_data['成交套数_移动平均'], label='成交套数_移动平均', color='red', linestyle='--')
plt.title('深圳一手房成交均价和成交套数的移动平均趋势')
plt.xlabel('日期')
plt.ylabel('移动平均值')
plt.legend()#生成图例
plt.xticks(rotation=45)
plt.tight_layout()
plt.savefig("H:\VS Code\深圳一手商品房数据处理\移动平均趋势图.png")
#画出成交均价和成交套数的折线图
plt.figure(figsize=(12,6))
plt.plot(monthly_data['日期'], monthly_data['成交均价'], label='成交均价', color='blue')
plt.plot(monthly_data['日期'], monthly_data['成交套数'], label='成交套数', color='orange')
plt.title('深圳一手房成交均价和成交套数的月度趋势')
plt.xlabel('日期')
plt.ylabel('成交均价/成交套数')
plt.legend()
plt.xticks(rotation=45)
plt.tight_layout()
plt.savefig("H:\VS Code\深圳一手商品房数据处理\成交均价和成交套数折线图.png")
#plt.show()
#生成透视表绘制热力图
heatamp_data=df_clean.pivot_table(index="所属区",columns=df_clean['日期'].dt.month,values='成交均价')
plt.figure(figsize=(15,8),dpi=200)
sns.heatmap(heatamp_data,annot=True,fmt='.1f',cmap="YlGnBu")#生成热力图
plt.title('深圳各区月度房价热力图（元/㎡）')
plt.xlabel('月份')
plt.ylabel('行政区')
plt.savefig("H:\VS Code\深圳一手商品房数据处理\热力图.png")


